<!DOCTYPE html>
<html lang="en">

<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
	<meta name="keywords" content="Authorization" />
	<meta name="description" content="Authorization" />
	<!-- 网页标签标题 -->
	<title>Authorization</title>
	<link rel="shortcut icon" href="https://img.alicdn.com/tfs/TB1hgJpHAPoK1RjSZKbXXX1IXXa-64-64.png"/>
	<link rel="stylesheet" href="/build/documentation.css" />
</head>
<body>
	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/nacos_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a href="/zh-cn/index.html">首页</a></li><li class="menu-item menu-item-normal menu-item-normal-active"><a href="/zh-cn/docs/what-is-nacos.html">文档</a></li><li class="menu-item menu-item-normal"><a href="/zh-cn/blog/index.html">博客</a></li><li class="menu-item menu-item-normal"><a href="/zh-cn/community/index.html">社区</a></li><li class="menu-item menu-item-normal"><a href="https://cn.aliyun.com/product/aliware/mse?spm=nacos-website.topbar.0.0.0">企业版Nacos</a><img class="menu-img" src="https://img.alicdn.com/tfs/TB1esl_m.T1gK0jSZFrXXcNCXXa-200-200.png"/></li><li class="menu-item menu-item-normal"><a href="http://console.nacos.io/nacos/index.html">控制台样例</a></li></ul></div></div></header><div class="bar"><div class="bar-body"><img src="/img/docs.png" class="front-img"/><div class="bar-title"><span>Nacos 文档</span><div class="bone bone-light"></div></div><img src="/img/docs.png" class="back-img"/></div></div><section class="content-section"><div class="content-body"><div class="sidemenu"><div class="sidemenu-toggle"><img src="https://img.alicdn.com/tfs/TB1E6apXHGYBuNjy0FoXXciBFXa-200-200.png"/></div><ul><li class="menu-item menu-item-level-1"><span>Nacos </span><ul><li style="height:180px;overflow:hidden" class="menu-item menu-item-level-2"><span>Nacos是什么?<img style="transform:rotate(0deg)" class="menu-toggle" src="/img/arrow_down.png"/></span><ul><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/what-is-nacos.html" target="_self">Nacos简介</a></li><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/concepts.html" target="_self">概念</a></li><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/architecture.html" target="_self">架构</a></li><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/feature-list.html" target="_self">功能和需求列表</a></li></ul></li><li style="height:324px;overflow:hidden" class="menu-item menu-item-level-2"><span>快速开始<img style="transform:rotate(0deg)" class="menu-toggle" src="/img/arrow_down.png"/></span><ul><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/quick-start.html" target="_self">Nacos</a></li><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/quick-start-spring.html" target="_self">Nacos Spring</a></li><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/quick-start-spring-boot.html" target="_self">Nacos Spring Boot</a></li><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/quick-start-spring-cloud.html" target="_self">Nacos Spring Cloud</a></li><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/quick-start-docker.html" target="_self">Nacos Docker</a></li><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/use-nacos-with-dubbo.html" target="_self">Nacos Dubbo</a></li><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/use-nacos-with-kubernetes.html" target="_self">Nacos k8s</a></li><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/nacos-sync.html" target="_self">Nacos Sync</a></li></ul></li><li style="height:288px;overflow:hidden" class="menu-item menu-item-level-2"><span>用户指南<img style="transform:rotate(0deg)" class="menu-toggle" src="/img/arrow_down.png"/></span><ul><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/sdk.html" target="_self">Java的SDK</a></li><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/other-language.html" target="_self">其他语言的SDK</a></li><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/open-api.html" target="_self">Open-API指南</a></li><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/nacos-spring.html" target="_self">Nacos Spring</a></li><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/system-configurations.html" target="_self">Nacos系统参数介绍</a></li><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/auth.html" target="_self">权限认证</a></li><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/faq.html" target="_self">FAQ</a></li></ul></li><li style="height:36px;overflow:hidden" class="menu-item menu-item-level-2"><span>运维指南<img style="transform:rotate(-90deg)" class="menu-toggle" src="/img/arrow_down.png"/></span><ul><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/deployment.html" target="_self">部署手册</a></li><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/cluster-mode-quick-start.html" target="_self">集群部署说明</a></li><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/management-api.html" target="_self">运维API</a></li><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/console-guide.html" target="_self">控制台手册</a></li><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/monitor-guide.html" target="_self">监控手册</a></li><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/nacos-config-benchmark.html" target="_self">Nacos配置模块压测报告</a></li><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/nacos2-config-benchmark.html" target="_self">Nacos2.0配置模块压测报告</a></li><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/nacos-naming-benchmark.html" target="_self">Nacos服务发现模块压测报告</a></li><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/nacos2-naming-benchmark.html" target="_self">Nacos2.0服务发现模块压测报告</a></li><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/nacos-sync-use.html" target="_self">其他环境迁移到Nacos</a></li></ul></li><li style="height:36px;overflow:hidden" class="menu-item menu-item-level-2"><span>Nacos 2.0<img style="transform:rotate(-90deg)" class="menu-toggle" src="/img/arrow_down.png"/></span><ul><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/2.0.0-alpha.html" target="_self">2.0-BETA</a></li><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/2.0.0-upgrading.html" target="_self">升级文档</a></li></ul></li><li style="height:36px;overflow:hidden" class="menu-item menu-item-level-2"><span>开源共建<img style="transform:rotate(-90deg)" class="menu-toggle" src="/img/arrow_down.png"/></span><ul><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/contributing.html" target="_self">贡献源码</a></li><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/contributing-flow.html" target="_self">贡献流程</a></li><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/pull-request.html" target="_self">pull request模板</a></li><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/how-to-reporting-bugs.html" target="_self">如何提交问题报告</a></li></ul></li><li style="height:36px;overflow:hidden" class="menu-item menu-item-level-2"><span>社区<img style="transform:rotate(-90deg)" class="menu-toggle" src="/img/arrow_down.png"/></span><ul><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/community.html" target="_self">社区</a></li><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/nacos-dev.html" target="_self">开发团队</a></li></ul></li></ul></li></ul></div><div class="doc-content markdown-body"><h1>鉴权</h1>
<h2>注意</h2>
<ol>
<li>Nacos定义为一个IDC内部应用组件，并非面向公网环境的产品，建议大家不要暴露在公网环境。</li>
<li>Nacos开源社区提供的简单鉴权实现仅为抛砖引玉，初衷为防止业务错用影响他人的弱鉴权体系，不是防止恶意攻击的强鉴权体系。Nacos默认收到的请求都是在您的可信网络环境中运行。</li>
<li>Nacos鉴权作为非核心能力，后续将逐渐优化抽象拓展，方便有强鉴权需求的公司在自己的安全体系下拓展，Nacos的默认鉴权实现可以看作一个简单的鉴权demo，仅供参考。</li>
<li>欢迎社区安全高手贡献鉴权及安全部分的内容。</li>
</ol>
<h2>服务端如何开启鉴权</h2>
<h3>非Docker环境</h3>
<p>按照官方文档配置启动,默认是不需要登录的，这样会导致配置中心对外直接暴露。而启用鉴权之后，需要在使用用户名和密码登录之后，才能正常使用nacos。</p>
<p>开启鉴权之前，application.properties中的配置信息为：</p>
<pre><code class="language-java">### If turn on auth system:
nacos.core.auth.enabled=false
</code></pre>
<p>开启鉴权之后，application.properties中的配置信息为：</p>
<pre><code class="language-java">### If turn on auth system:
nacos.core.auth.enabled=true
</code></pre>
<h3>Docker环境</h3>
<h4>官方镜像</h4>
<p>如果使用官方镜像，请在启动docker容器时，添加如下环境变量</p>
<pre><code class="language-powershell">NACOS_AUTH_ENABLE=true
</code></pre>
<p>例如，可以通过如下命令运行开启了鉴权的容器:</p>
<pre><code class="language-powershell">docker run -<span class="hljs-literal">-env</span> PREFER_HOST_MODE=hostname -<span class="hljs-literal">-env</span> MODE=standalone -<span class="hljs-literal">-env</span> NACOS_AUTH_ENABLE=true <span class="hljs-literal">-p</span> <span class="hljs-number">8848</span>:<span class="hljs-number">8848</span> nacos/nacos<span class="hljs-literal">-server</span>
</code></pre>
<p>除此之外，还可以添加其他鉴权相关的环境变量信息：</p>
<table>
<thead>
<tr>
<th>name</th>
<th>description</th>
<th>option</th>
</tr>
</thead>
<tbody>
<tr>
<td>NACOS_AUTH_ENABLE</td>
<td>是否开启权限系统</td>
<td>默认:false</td>
</tr>
<tr>
<td>NACOS_AUTH_TOKEN_EXPIRE_SECONDS</td>
<td>token 失效时间</td>
<td>默认:18000</td>
</tr>
<tr>
<td>NACOS_AUTH_TOKEN</td>
<td>token</td>
<td>默认:SecretKey012345678901234567890123456789012345678901234567890123456789</td>
</tr>
<tr>
<td>NACOS_AUTH_CACHE_ENABLE</td>
<td>权限缓存开关 ,开启后权限缓存的更新默认有15秒的延迟</td>
<td>默认 : false</td>
</tr>
</tbody>
</table>
<p>然后运行docker-compose构建命令,例如</p>
<pre><code class="language-powershell">docker<span class="hljs-literal">-compose</span> <span class="hljs-operator">-f</span> example/standalone<span class="hljs-literal">-derby</span>.yaml up
</code></pre>
<h4>自定义镜像</h4>
<p>如果选择自定义镜像，请在构建镜像之前，修改nacos工程中的application.properties文件，</p>
<p>将下面这一行配置信息</p>
<pre><code>nacos.core.auth.enabled=false
</code></pre>
<p>修改为</p>
<pre><code>nacos.core.auth.enabled=true
</code></pre>
<p>然后再配置nacos启动命令。</p>
<h2>客户端如何进行鉴权</h2>
<h3>Java SDK鉴权</h3>
<p>在构建“Properties”类时,需传入用户名和密码。</p>
<pre><code class="language-java">properties.put(<span class="hljs-string">"username"</span>,<span class="hljs-string">"${username}"</span>);
properties.put(<span class="hljs-string">"password"</span>,<span class="hljs-string">"${password}"</span>);
</code></pre>
<h4>示例代码</h4>
<pre><code class="language-java"><span class="hljs-keyword">try</span> {
    <span class="hljs-comment">// Initialize the configuration service, and the console automatically obtains the following parameters through the sample code.</span>
	String serverAddr = <span class="hljs-string">"{serverAddr}"</span>;
	Properties properties = <span class="hljs-keyword">new</span> Properties();
	properties.put(<span class="hljs-string">"serverAddr"</span>, serverAddr);

    <span class="hljs-comment">// if need username and password to login</span>
        properties.put(<span class="hljs-string">"username"</span>,<span class="hljs-string">"nacos"</span>);
        properties.put(<span class="hljs-string">"password"</span>,<span class="hljs-string">"nacos"</span>);

	ConfigService configService = NacosFactory.createConfigService(properties);
} <span class="hljs-keyword">catch</span> (NacosException e) {
    <span class="hljs-comment">// TODO Auto-generated catch block</span>
    e.printStackTrace();
}
</code></pre>
<h3>其他语言的SDK鉴权</h3>
<p>待补充</p>
<h3>Open-API鉴权</h3>
<p>首先需要使用用户名和密码登陆nacos。</p>
<pre><code class="language-plain">curl -X POST '127.0.0.1:8848/nacos/v1/auth/login' -d 'username=nacos&amp;password=nacos'
</code></pre>
<p>若用户名和密码正确,返回信息如下:</p>
<pre><code>{&quot;accessToken&quot;:&quot;eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTYwNTYyOTE2Nn0.2TogGhhr11_vLEjqKko1HJHUJEmsPuCxkur-CfNojDo&quot;,&quot;tokenTtl&quot;:18000,&quot;globalAdmin&quot;:true}
</code></pre>
<p>接下来进行配置信息或服务信息时,应当使用该accessToken鉴权,在url后添加参数accessToken={accessToken},其中{accessToken}为登录时返回的token信息，例如</p>
<pre><code class="language-plain">curl -X GET '127.0.0.1:8848/nacos/v1/cs/configs?accessToken=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTYwNTYyMzkyM30.O-s2yWfDSUZ7Svd3Vs7jy9tsfDNHs1SuebJB4KlNY8Q&amp;dataId=nacos.example.1&amp;group=nacos_group'
</code></pre>
<pre><code class="language-plain">curl -X POST 'http://127.0.0.1:8848/nacos/v1/ns/instance?accessToken=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTYwNTYyMzkyM30.O-s2yWfDSUZ7Svd3Vs7jy9tsfDNHs1SuebJB4KlNY8Q&amp;port=8848&amp;healthy=true&amp;ip=11.11.11.11&amp;weight=1.0&amp;serviceName=nacos.test.3&amp;encoding=GBK&amp;namespaceId=n1'
</code></pre>
<h2>开启服务身份识别功能</h2>
<p>开启鉴权功能后，服务端之间的请求也会通过鉴权系统的影响。考虑到服务端之间的通信应该是可信的，因此在1.2~1.4.0版本期间，通过User-Agent中是否包含Nacos-Server来进行判断请求是否来自其他服务端。</p>
<p>但这种实现由于过于简单且固定，导致可能存在安全问题。因此从1.4.1版本开始，Nacos添加服务身份识别功能，用户可以自行配置服务端的Identity，不再使用User-Agent作为服务端请求的判断标准。</p>
<p>开启方式:</p>
<pre><code>### 开启鉴权
nacos.core.auth.enabled=true

### 关闭使用user-agent判断服务端请求并放行鉴权的功能
nacos.core.auth.enable.userAgentAuthWhite=false

### 配置自定义身份识别的key（不可为空）和value（不可为空）
nacos.core.auth.server.identity.key=example
nacos.core.auth.server.identity.value=example
</code></pre>
<p>** 注意 ** 所有集群均需要配置相同的<code>server.identity</code>信息，否则可能导致服务端之间数据不一致或无法删除实例等问题。</p>
<h3>旧版本升级</h3>
<p>考虑到旧版本用户需要升级，可以在升级期间，开启<code>nacos.core.auth.enable.userAgentAuthWhite=true</code>功能，待集群整体升级到1.4.1并稳定运行后，再关闭此功能。</p>
</div></div></section><footer class="footer-container"><div class="footer-body"><img src="/img/nacos_gray.png"/><div class="cols-container"><div class="col col-12"><h3>愿景</h3><p>Nacos 通过提供简单易用的动态服务发现、服务配置、服务共享与管理等服务基础设施，帮助用户在云原生时代，在私有云、混合云或者公有云等所有云环境中，更好的构建、交付、管理自己的微服务平台，更快的复用和组合业务服务，更快的交付商业创新的价值，从而为用户赢得市场。</p></div><div class="col col-6"><dl><dt>文档</dt><dd><a href="/zh-cn/docs/what-is-nacos.html" target="_self">概览</a></dd><dd><a href="/zh-cn/docs/quick-start.html" target="_self">快速开始</a></dd><dd><a href="/zh-cn/docs/contributing.html" target="_self">开发者指南</a></dd></dl></div><div class="col col-6"><dl><dt>资源</dt><dd><a href="/zh-cn/community/index.html" target="_self">社区</a></dd><dd><a href="https://cn.aliyun.com/product/aliware/mse?spm=nacos-website.topbar.0.0.0" target="_self">云服务 MSE</a></dd><dd><a href="https://www.aliyun.com/product/edas?source_type=nacos_pc_20181219" target="_self">云服务 EDAS</a></dd><dd><a href="https://www.aliyun.com/product/ahas?source_type=nacos_pc_20190225" target="_self">云服务 AHAS</a></dd></dl></div></div><div class="copyright"><span>@ 2018 The Nacos Authors | An Alibaba Middleware (Aliware) Project</span></div></div></footer></div></div>
	<script src="https://f.alicdn.com/react/15.4.1/react-with-addons.min.js"></script>
	<script src="https://f.alicdn.com/react/15.4.1/react-dom.min.js"></script>
	<script>
		window.rootPath = '';
  </script>
	<script src="/build/documentation.js"></script>
</body>
</html>